/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sgs.mb;

import br.com.sgs.bundle.MessageBundleLoader;
import br.com.sgs.entity.Aluno;
import br.com.sgs.entity.Funcionario;
import br.com.sgs.entity.Usuario;
import br.com.sgs.fachada.UsuarioFachada;
import br.com.sgs.fachada.UsuarioIFachada;
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.jms.Session;
import javax.servlet.ServletContext;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.component.password.Password;

/**
 *
 * @author Eric
 */
@ManagedBean(name = "loginMB")
@SessionScoped
public class LoginMB implements Serializable {

    private Usuario usuario;
    private Funcionario funcionario;
    private Aluno aluno;
    private InputText instituicao;
    private InputText login;
    private Password senha;
    private String strinstituicao;
    private String strnome;
    private boolean logado = false;
    private boolean typefuncionario = false;
    private boolean typealuno = false;
    /**
     * Creates a new instance of LoginMB
     */
    public LoginMB() {
        ServletContext servletContext = getServletContext();
        servletContext.setAttribute("loginMB", this);
    }

    @PostConstruct
    public void init() {
        try {
        } catch (Exception e) {
            System.err.println("Erro no Login");
        }
    }

    public String autenticacao() {
        try {
            
            UsuarioIFachada u = new UsuarioFachada();
            
            funcionario = u.autenticacaoFunc(getLogin().getValue().toString(), getSenha().getValue().toString(), Integer.parseInt(getInstituicao().getValue().toString()));

            if (funcionario != null) {
                strinstituicao = funcionario.getInstituicao().getNome();
                strnome = funcionario.getNome();
                typealuno = false;
                typefuncionario = true;
                setLogado(true);
                return "restrito/instituicaoNewf.xhtml?faces-redirect=true";
                

            } else {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, MessageBundleLoader.getMessage("usuarioThrowUsuarioIncorreto"), ""));
                return null;
            }

        } catch (Exception e) {
            System.err.println("Erro na autenticaçao");
            e.printStackTrace();
            return null;
        }
    }
    
    public String autenticacaoAluno() {
        try {
            
            UsuarioIFachada u = new UsuarioFachada();
            
            aluno = u.autenticacaoAluno(getLogin().getValue().toString(), getSenha().getValue().toString(), Integer.parseInt(getInstituicao().getValue().toString()));

            if (aluno != null) {
                strinstituicao = aluno.getInstituicao().getNome();
                strnome = aluno.getNome();
                typefuncionario = false;
                typealuno = true;
                setLogado(true);
                return "restrito/alunoSolicitacaof.xhtml?faces-redirect=true";

            } else {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, MessageBundleLoader.getMessage("usuarioThrowUsuarioIncorreto"), ""));
                return null;
            }

        } catch (Exception e) {
            System.err.println("Erro na autenticaçao");
            e.printStackTrace();
            return null;
        }
    }

    protected ServletContext getServletContext() {
        return (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
    }

    public String sair() {
        this.setLogado(false);
        return "LOGIN";
    }

    /**
     * @return the usuario
     */
    public Usuario getUsuario() {
        return usuario;
    }

    /**
     * @param usuario the usuario to set
     */
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    /**
     * @return the logado
     */
    public boolean isLogado() {
        return logado;
    }

    /**
     * @param logado the logado to set
     */
    public void setLogado(boolean logado) {
        this.logado = logado;
    }

    /**
     * @return the instituicao
     */
    public InputText getInstituicao() {
        return instituicao;
    }

    /**
     * @param instituicao the instituicao to set
     */
    public void setInstituicao(InputText instituicao) {
        this.instituicao = instituicao;
    }

    /**
     * @return the login
     */
    public InputText getLogin() {
        return login;
    }

    /**
     * @param login the login to set
     */
    public void setLogin(InputText login) {
        this.login = login;
    }

    /**
     * @return the senha
     */
    public Password getSenha() {
        return senha;
    }

    /**
     * @param senha the senha to set
     */
    public void setSenha(Password senha) {
        this.senha = senha;
    }

    /**
     * @return the funcionario
     */
    public Funcionario getFuncionario() {
        return funcionario;
    }

    /**
     * @param funcionario the funcionario to set
     */
    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

    /**
     * @return the aluno
     */
    public Aluno getAluno() {
        return aluno;
    }

    /**
     * @param aluno the aluno to set
     */
    public void setAluno(Aluno aluno) {
        this.aluno = aluno;
    }


    /**
     * @return the strinstituicao
     */
    public String getStrinstituicao() {
        return strinstituicao;
    }

    /**
     * @param strinstituicao the strinstituicao to set
     */
    public void setStrinstituicao(String strinstituicao) {
        this.strinstituicao = strinstituicao;
    }

    /**
     * @return the strnome
     */
    public String getStrnome() {
        return strnome;
    }

    /**
     * @param strnome the strnome to set
     */
    public void setStrnome(String strnome) {
        this.strnome = strnome;
    }

    /**
     * @return the typefuncionario
     */
    public boolean isTypefuncionario() {
        return typefuncionario;
    }

    /**
     * @param typefuncionario the typefuncionario to set
     */
    public void setTypefuncionario(boolean typefuncionario) {
        this.typefuncionario = typefuncionario;
    }

    /**
     * @return the typealuno
     */
    public boolean isTypealuno() {
        return typealuno;
    }

    /**
     * @param typealuno the typealuno to set
     */
    public void setTypealuno(boolean typealuno) {
        this.typealuno = typealuno;
    }
  
}
